﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EzyGoEzySystem.Interfaces
{
    /// <summary>
    /// Interface to manage the profile of a commuter
    /// </summary>
    public interface IProfileManagement
    {
        /// <summary>
        /// create a new profile with specific details
        /// </summary>
        /// <returns>the id of the newly created profile</returns>
        int AddProfile(string name = "", string nric = "", int age = 0, bool male = true, string address = "", string phoneNumber = "", string accountNo = "", bool prePayment = true);

        /// <summary>
        /// update the profile of specific ID with specific details
        /// </summary>
        /// <returns>true if update is successful, otherwise false</returns>
        bool UpdateProfile(int profileID, string name = "", string nric = "", int age = 0, bool male = true, string address = "", string phoneNumber = "", string accountNo = "", bool prePayment = true);
        
        /// <summary>
        /// remove the profile of specific ID
        /// </summary>
        /// <returns>true if remove is successful, otherwise false</returns>
        bool RemoveProfile(int profileID);

        /// <summary>
        /// get the name of the profile based on its ID
        /// </summary>
        /// <param name="profileID"></param>
        /// <returns></returns>
        string GetProfileName(int profileID);

        /// <summary>
        /// get the account number of the profile based on its ID
        /// </summary>
        /// <param name="profileID"></param>
        /// <returns></returns>
        string GetAccountNo(int profileID);

        /// <summary>
        /// check if a profile with specific ID uses prepay method
        /// </summary>
        /// <param name="profileID"></param>
        /// <returns></returns>
        bool IsPrePayment(int profileID);

        /// <summary>
        /// get the
        /// </summary>
        /// <param name="profileID"></param>
        /// <returns></returns>
        double GetAccountBalance(int profileID);
    }
}
